package com.example.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 借阅记录VO
 * 
 * @author HP
 * @description 借阅记录视图对象，包含书名等详细信息
 * @createDate 2025-08-31
 */
@Data
public class BorrowRecordVO implements Serializable {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 借阅用户ID
     */
    private Long userId;

    /**
     * 用户名
     */
    private String username;

    /**
     * 借阅的图书副本ID
     */
    private Long bookCopyId;

    /**
     * 图书ID
     */
    private Long bookId;

    /**
     * 书名
     */
    private String bookTitle;

    /**
     * 作者
     */
    private String author;

    /**
     * 出版社
     */
    private String publisher;

    /**
     * 借阅时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date borrowTime;

    /**
     * 应归还时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date dueReturnTime;

    /**
     * 实际归还时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date actualReturnTime;

    /**
     * 0:借阅中, 1:已归还, 2:逾期未还
     */
    private Integer borrowStatus;

    /**
     * 借阅状态描述
     */
    private String borrowStatusDesc;

    /**
     * 是否逾期
     */
    private Boolean overdue;

    /**
     * 逾期天数
     */
    private Integer overdueDays;

    /**
     * 获取借阅状态描述
     */
    public String getBorrowStatusDesc() {
        if (borrowStatus == null) {
            return "未知状态";
        }
        switch (borrowStatus) {
            case 0:
                return "借阅中";
            case 1:
                return "已归还";
            case 2:
                return "逾期未还";
            default:
                return "未知状态";
        }
    }

    private static final long serialVersionUID = 1L;
}